package sea.plot;

import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import sea.util.PublicParam;
import sea.util.SimHyAHelper;
import sea.util.WinHelper;
import simhya.script.ExploredSymbol;
import simhya.script.Symbol;

/**
 *
 * This class builds the layout of PlotPhase interface
 * 
 * @author  Zhirun Ding
 * 
 * Created on 05/07/2012
 * 
 */

public class PlotPhaseForm extends javax.swing.JDialog {
    
    /** Creates new form PlotPhaseForm */
    public PlotPhaseForm(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        trajectoryButtonGroup = new javax.swing.ButtonGroup();
        stattypeButtonGroup = new javax.swing.ButtonGroup();
        typeButtonGroup = new javax.swing.ButtonGroup();
        zButtonGroup = new javax.swing.ButtonGroup();
        simtypeButtonGroup = new javax.swing.ButtonGroup();
        trajectoryPanel = new javax.swing.JPanel();
        trajectoryLabel = new javax.swing.JLabel();
        singleRadioButton = new javax.swing.JRadioButton();
        allRadioButton = new javax.swing.JRadioButton();
        rangeRadioButton = new javax.swing.JRadioButton();
        listRadioButton = new javax.swing.JRadioButton();
        singleText = new javax.swing.JTextField();
        fromLabel = new javax.swing.JLabel();
        fromText = new javax.swing.JTextField();
        toLabel = new javax.swing.JLabel();
        toText = new javax.swing.JTextField();
        listText = new javax.swing.JTextField();
        statisticsPanel = new javax.swing.JPanel();
        stattypeLabel = new javax.swing.JLabel();
        averageRadioButton = new javax.swing.JRadioButton();
        varianceRadioButton = new javax.swing.JRadioButton();
        stddevRadioButton = new javax.swing.JRadioButton();
        stderrRadioButton = new javax.swing.JRadioButton();
        cvRadioButton = new javax.swing.JRadioButton();
        fanoRadioButton = new javax.swing.JRadioButton();
        skewRadioButton = new javax.swing.JRadioButton();
        kurtosisRadioButton = new javax.swing.JRadioButton();
        backButton = new javax.swing.JButton();
        confirmButton = new javax.swing.JButton();
        trajectoryRadioButton = new javax.swing.JRadioButton();
        statisticsRadioButton = new javax.swing.JRadioButton();
        jLabel6 = new javax.swing.JLabel();
        jScrollPane2 = new javax.swing.JScrollPane();
        param1List = new javax.swing.JList();
        jLabel7 = new javax.swing.JLabel();
        jScrollPane3 = new javax.swing.JScrollPane();
        param2List = new javax.swing.JList();
        jScrollPane4 = new javax.swing.JScrollPane();
        varList = new javax.swing.JList();
        d3RadioButton = new javax.swing.JRadioButton();
        d2RadioButton = new javax.swing.JRadioButton();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        fixlistLabel = new javax.swing.JLabel();
        jScrollPane5 = new javax.swing.JScrollPane();
        fixlistTable = new javax.swing.JTable();
        zaxisLabel = new javax.swing.JLabel();
        zBottomLabel = new javax.swing.JLabel();
        helpButton = new javax.swing.JButton();
        addButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(sea.SimHyAGui.class).getContext().getResourceMap(PlotPhaseForm.class);
        setTitle(resourceMap.getString("PlotPhaseForm.title")); // NOI18N
        setName("PlotPhaseForm"); // NOI18N
        setResizable(false);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentShown(java.awt.event.ComponentEvent evt) {
                formComponentShown(evt);
            }
        });

        trajectoryPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        trajectoryPanel.setName("trajectoryPanel"); // NOI18N

        trajectoryLabel.setText(resourceMap.getString("trajectoryLabel.text")); // NOI18N
        trajectoryLabel.setEnabled(false);
        trajectoryLabel.setName("trajectoryLabel"); // NOI18N

        trajectoryButtonGroup.add(singleRadioButton);
        singleRadioButton.setText(resourceMap.getString("singleRadioButton.text")); // NOI18N
        singleRadioButton.setEnabled(false);
        singleRadioButton.setName("singleRadioButton"); // NOI18N
        singleRadioButton.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                singleRadioButtonItemStateChanged(evt);
            }
        });

        trajectoryButtonGroup.add(allRadioButton);
        allRadioButton.setSelected(true);
        allRadioButton.setText(resourceMap.getString("allRadioButton.text")); // NOI18N
        allRadioButton.setEnabled(false);
        allRadioButton.setName("allRadioButton"); // NOI18N
        allRadioButton.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                allRadioButtonItemStateChanged(evt);
            }
        });

        trajectoryButtonGroup.add(rangeRadioButton);
        rangeRadioButton.setText(resourceMap.getString("rangeRadioButton.text")); // NOI18N
        rangeRadioButton.setEnabled(false);
        rangeRadioButton.setName("rangeRadioButton"); // NOI18N
        rangeRadioButton.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                rangeRadioButtonItemStateChanged(evt);
            }
        });

        trajectoryButtonGroup.add(listRadioButton);
        listRadioButton.setText(resourceMap.getString("listRadioButton.text")); // NOI18N
        listRadioButton.setEnabled(false);
        listRadioButton.setName("listRadioButton"); // NOI18N
        listRadioButton.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                listRadioButtonItemStateChanged(evt);
            }
        });

        singleText.setEnabled(false);
        singleText.setName("singleText"); // NOI18N

        fromLabel.setText(resourceMap.getString("fromLabel.text")); // NOI18N
        fromLabel.setEnabled(false);
        fromLabel.setName("fromLabel"); // NOI18N

        fromText.setEnabled(false);
        fromText.setName("fromText"); // NOI18N

        toLabel.setText(resourceMap.getString("toLabel.text")); // NOI18N
        toLabel.setEnabled(false);
        toLabel.setName("toLabel"); // NOI18N

        toText.setEnabled(false);
        toText.setName("toText"); // NOI18N

        listText.setEnabled(false);
        listText.setName("listText"); // NOI18N

        javax.swing.GroupLayout trajectoryPanelLayout = new javax.swing.GroupLayout(trajectoryPanel);
        trajectoryPanel.setLayout(trajectoryPanelLayout);
        trajectoryPanelLayout.setHorizontalGroup(
            trajectoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(trajectoryPanelLayout.createSequentialGroup()
                .addGroup(trajectoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(trajectoryPanelLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(trajectoryLabel))
                    .addGroup(trajectoryPanelLayout.createSequentialGroup()
                        .addGap(28, 28, 28)
                        .addGroup(trajectoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(allRadioButton)
                            .addGroup(trajectoryPanelLayout.createSequentialGroup()
                                .addComponent(listRadioButton)
                                .addGap(18, 18, 18)
                                .addComponent(listText))
                            .addGroup(trajectoryPanelLayout.createSequentialGroup()
                                .addGroup(trajectoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, trajectoryPanelLayout.createSequentialGroup()
                                        .addComponent(singleRadioButton)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(singleText))
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, trajectoryPanelLayout.createSequentialGroup()
                                        .addComponent(rangeRadioButton)
                                        .addGap(18, 18, 18)
                                        .addComponent(fromLabel)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(fromText, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(toLabel)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(toText, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                .addContainerGap(19, Short.MAX_VALUE))
        );
        trajectoryPanelLayout.setVerticalGroup(
            trajectoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(trajectoryPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(trajectoryLabel)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(trajectoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(singleRadioButton)
                    .addComponent(singleText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(allRadioButton)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(trajectoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(rangeRadioButton)
                    .addComponent(fromLabel)
                    .addComponent(fromText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(toLabel)
                    .addComponent(toText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(trajectoryPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(listRadioButton)
                    .addComponent(listText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(15, Short.MAX_VALUE))
        );

        statisticsPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        statisticsPanel.setName("statisticsPanel"); // NOI18N

        stattypeLabel.setText(resourceMap.getString("stattypeLabel.text")); // NOI18N
        stattypeLabel.setEnabled(false);
        stattypeLabel.setName("stattypeLabel"); // NOI18N

        stattypeButtonGroup.add(averageRadioButton);
        averageRadioButton.setSelected(true);
        averageRadioButton.setText(resourceMap.getString("averageRadioButton.text")); // NOI18N
        averageRadioButton.setEnabled(false);
        averageRadioButton.setName("averageRadioButton"); // NOI18N

        stattypeButtonGroup.add(varianceRadioButton);
        varianceRadioButton.setText(resourceMap.getString("varianceRadioButton.text")); // NOI18N
        varianceRadioButton.setEnabled(false);
        varianceRadioButton.setName("varianceRadioButton"); // NOI18N

        stattypeButtonGroup.add(stddevRadioButton);
        stddevRadioButton.setText(resourceMap.getString("stddevRadioButton.text")); // NOI18N
        stddevRadioButton.setEnabled(false);
        stddevRadioButton.setName("stddevRadioButton"); // NOI18N

        stattypeButtonGroup.add(stderrRadioButton);
        stderrRadioButton.setText(resourceMap.getString("stderrRadioButton.text")); // NOI18N
        stderrRadioButton.setEnabled(false);
        stderrRadioButton.setName("stderrRadioButton"); // NOI18N

        stattypeButtonGroup.add(cvRadioButton);
        cvRadioButton.setText(resourceMap.getString("cvRadioButton.text")); // NOI18N
        cvRadioButton.setEnabled(false);
        cvRadioButton.setName("cvRadioButton"); // NOI18N

        stattypeButtonGroup.add(fanoRadioButton);
        fanoRadioButton.setText(resourceMap.getString("fanoRadioButton.text")); // NOI18N
        fanoRadioButton.setEnabled(false);
        fanoRadioButton.setName("fanoRadioButton"); // NOI18N

        stattypeButtonGroup.add(skewRadioButton);
        skewRadioButton.setText(resourceMap.getString("skewRadioButton.text")); // NOI18N
        skewRadioButton.setEnabled(false);
        skewRadioButton.setName("skewRadioButton"); // NOI18N

        stattypeButtonGroup.add(kurtosisRadioButton);
        kurtosisRadioButton.setText(resourceMap.getString("kurtosisRadioButton.text")); // NOI18N
        kurtosisRadioButton.setEnabled(false);
        kurtosisRadioButton.setName("kurtosisRadioButton"); // NOI18N

        javax.swing.GroupLayout statisticsPanelLayout = new javax.swing.GroupLayout(statisticsPanel);
        statisticsPanel.setLayout(statisticsPanelLayout);
        statisticsPanelLayout.setHorizontalGroup(
            statisticsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(statisticsPanelLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(statisticsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(stattypeLabel)
                    .addGroup(statisticsPanelLayout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addGroup(statisticsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(averageRadioButton)
                            .addComponent(stddevRadioButton)
                            .addComponent(cvRadioButton)
                            .addComponent(skewRadioButton))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(statisticsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(kurtosisRadioButton)
                            .addComponent(fanoRadioButton)
                            .addComponent(stderrRadioButton)
                            .addComponent(varianceRadioButton)))))
        );
        statisticsPanelLayout.setVerticalGroup(
            statisticsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(statisticsPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(statisticsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(statisticsPanelLayout.createSequentialGroup()
                        .addComponent(varianceRadioButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(stderrRadioButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(fanoRadioButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(kurtosisRadioButton))
                    .addGroup(statisticsPanelLayout.createSequentialGroup()
                        .addComponent(stattypeLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(averageRadioButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(stddevRadioButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(cvRadioButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(skewRadioButton)))
                .addContainerGap(21, Short.MAX_VALUE))
        );

        backButton.setText(resourceMap.getString("backButton.text")); // NOI18N
        backButton.setName("backButton"); // NOI18N
        backButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                backButtonActionPerformed(evt);
            }
        });

        confirmButton.setText(resourceMap.getString("confirmButton.text")); // NOI18N
        confirmButton.setName("confirmButton"); // NOI18N
        confirmButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                confirmButtonActionPerformed(evt);
            }
        });

        simtypeButtonGroup.add(trajectoryRadioButton);
        trajectoryRadioButton.setLabel(resourceMap.getString("trajectoryRadioButton.label")); // NOI18N
        trajectoryRadioButton.setName("trajectoryRadioButton"); // NOI18N
        trajectoryRadioButton.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                trajectoryRadioButtonItemStateChanged(evt);
            }
        });

        simtypeButtonGroup.add(statisticsRadioButton);
        statisticsRadioButton.setText(resourceMap.getString("statisticsRadioButton.text")); // NOI18N
        statisticsRadioButton.setName("statisticsRadioButton"); // NOI18N
        statisticsRadioButton.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                statisticsRadioButtonItemStateChanged(evt);
            }
        });

        jLabel6.setText(resourceMap.getString("jLabel6.text")); // NOI18N
        jLabel6.setName("jLabel6"); // NOI18N

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        param1List.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        param1List.setName("param1List"); // NOI18N
        param1List.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                param1ListValueChanged(evt);
            }
        });
        jScrollPane2.setViewportView(param1List);

        jLabel7.setText(resourceMap.getString("jLabel7.text")); // NOI18N
        jLabel7.setName("jLabel7"); // NOI18N

        jScrollPane3.setName("jScrollPane3"); // NOI18N

        param2List.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        param2List.setName("param2List"); // NOI18N
        jScrollPane3.setViewportView(param2List);

        jScrollPane4.setName("jScrollPane4"); // NOI18N

        varList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        varList.setEnabled(false);
        varList.setName("varList"); // NOI18N
        jScrollPane4.setViewportView(varList);

        zButtonGroup.add(d3RadioButton);
        d3RadioButton.setText(resourceMap.getString("d3RadioButton.text")); // NOI18N
        d3RadioButton.setName("d3RadioButton"); // NOI18N
        d3RadioButton.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                d3RadioButtonStateChanged(evt);
            }
        });

        zButtonGroup.add(d2RadioButton);
        d2RadioButton.setSelected(true);
        d2RadioButton.setText(resourceMap.getString("d2RadioButton.text")); // NOI18N
        d2RadioButton.setName("d2RadioButton"); // NOI18N

        jLabel8.setText(resourceMap.getString("jLabel8.text")); // NOI18N
        jLabel8.setName("jLabel8"); // NOI18N

        jLabel9.setText(resourceMap.getString("jLabel9.text")); // NOI18N
        jLabel9.setName("jLabel9"); // NOI18N

        fixlistLabel.setText(resourceMap.getString("fixlistLabel.text")); // NOI18N
        fixlistLabel.setName("fixlistLabel"); // NOI18N

        jScrollPane5.setName("jScrollPane5"); // NOI18N

        fixlistTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Selected", "Name", "Value"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Boolean.class, java.lang.String.class, java.lang.String.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        fixlistTable.setName("fixlistTable"); // NOI18N
        jScrollPane5.setViewportView(fixlistTable);

        zaxisLabel.setText(resourceMap.getString("zaxisLabel.text")); // NOI18N
        zaxisLabel.setEnabled(false);
        zaxisLabel.setName("zaxisLabel"); // NOI18N

        zBottomLabel.setText(resourceMap.getString("zBottomLabel.text")); // NOI18N
        zBottomLabel.setEnabled(false);
        zBottomLabel.setName("zBottomLabel"); // NOI18N

        helpButton.setText(resourceMap.getString("helpButton.text")); // NOI18N
        helpButton.setName("helpButton"); // NOI18N
        helpButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                helpButtonActionPerformed(evt);
            }
        });

        addButton.setText(resourceMap.getString("addButton.text")); // NOI18N
        addButton.setName("addButton"); // NOI18N
        addButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addButtonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(trajectoryPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(statisticsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(trajectoryRadioButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(statisticsRadioButton)))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(37, 37, 37)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(35, 35, 35)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGap(16, 16, 16)
                                        .addComponent(jLabel6))
                                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(6, 6, 6)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGap(32, 32, 32)
                                        .addComponent(jLabel9))
                                    .addGroup(layout.createSequentialGroup()
                                        .addGap(24, 24, 24)
                                        .addComponent(jLabel7))
                                    .addGroup(layout.createSequentialGroup()
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addGroup(layout.createSequentialGroup()
                                                .addGap(10, 10, 10)
                                                .addComponent(zBottomLabel)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(d2RadioButton)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(d3RadioButton))))
                                    .addGroup(layout.createSequentialGroup()
                                        .addGap(30, 30, 30)
                                        .addComponent(zaxisLabel))))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(34, 34, 34)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(fixlistLabel)
                                    .addComponent(jLabel8))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(addButton))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(72, 72, 72)
                        .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 296, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 3, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(33, 33, 33)
                        .addComponent(confirmButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(helpButton)
                        .addGap(3, 3, 3)))
                .addContainerGap(17, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(trajectoryRadioButton)
                            .addComponent(statisticsRadioButton))
                        .addGap(18, 18, 18)
                        .addComponent(trajectoryPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel6)
                            .addComponent(jLabel7)
                            .addComponent(zaxisLabel))
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(d2RadioButton)
                                    .addComponent(d3RadioButton)
                                    .addComponent(zBottomLabel)))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabel8))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabel9)))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(fixlistLabel)
                            .addComponent(addButton))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(backButton)
                            .addComponent(confirmButton)
                            .addComponent(helpButton))
                        .addContainerGap())
                    .addComponent(statisticsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void backButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backButtonActionPerformed
        this.setVisible(false);
        
        if (PublicParam.PreviousForm != null) {
            PublicParam.PreviousForm.setVisible(true);
        } 
    }//GEN-LAST:event_backButtonActionPerformed

    private void confirmButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_confirmButtonActionPerformed
        //generate plot command expression
        if (toPhaseCommand()) {        
            //execute command
            this.setVisible(false);
            SimHyAHelper.executeCommand();
            //close this form
            this.dispose();
            //clear all form of plot
            WinHelper.closeFormAfterCommand();
        }
    }//GEN-LAST:event_confirmButtonActionPerformed

    void enableTrajectoryOrStatTypeRadioButton() {
        //trajectory
        boolean enabled =  trajectoryRadioButton.isSelected() && trajectoryRadioButton.isEnabled();
        trajectoryLabel.setEnabled(enabled);
        singleRadioButton.setEnabled(enabled);
        singleText.setEnabled(singleRadioButton.isSelected() && enabled);
        allRadioButton.setEnabled(enabled);
        rangeRadioButton.setEnabled(enabled);
        fromLabel.setEnabled(rangeRadioButton.isSelected() && enabled);
        fromText.setEnabled(rangeRadioButton.isSelected() && enabled);
        toLabel.setEnabled(rangeRadioButton.isSelected() && enabled);
        toText.setEnabled(rangeRadioButton.isSelected() && enabled);
        listRadioButton.setEnabled(enabled);
        listText.setEnabled(listRadioButton.isSelected() && enabled);
        
        //stat type
        enabled =  statisticsRadioButton.isSelected() && statisticsRadioButton.isEnabled();
        stattypeLabel.setEnabled(enabled);
        averageRadioButton.setEnabled(enabled);
        varianceRadioButton.setEnabled(enabled);
        stddevRadioButton.setEnabled(enabled);
        stderrRadioButton.setEnabled(enabled);
        cvRadioButton.setEnabled(enabled);
        fanoRadioButton.setEnabled(enabled);
        skewRadioButton.setEnabled(enabled);
        kurtosisRadioButton.setEnabled(enabled);
    }
    
    private void d3RadioButtonStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_d3RadioButtonStateChanged
        zaxisLabel.setEnabled(d3RadioButton.isSelected());
        zBottomLabel.setEnabled(d3RadioButton.isSelected());
        varList.setEnabled(d3RadioButton.isSelected());
    }//GEN-LAST:event_d3RadioButtonStateChanged

    private void formComponentShown(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentShown
        if (PublicParam.PreviousForm != null) {
            PublicParam.PreviousForm.setVisible(false);
        }
        
        //get data variable
        String datavar = ((PlotForm)PublicParam.PlotForm).getCurrentDataVariable();
        if (lastDataVariable.equals(datavar)) return;//not change
        lastDataVariable = datavar;
        
        if (PublicParam.SimHyACommand.isDeterministicExploratorVariable(datavar)
                || PublicParam.SimHyACommand.isStatisticsExploratorVariable(datavar)) {
            //explore,3d            
            //ArrayList<ExploredSymbol> evars = PublicParam.SimHyACommand.getExploredParameters(datavar);
            //init fixlist        
            //WinHelper.initTable(fixlistTable, evars); 
            ArrayList<Symbol> vars = PublicParam.SimHyACommand.getVariables(datavar);
            //init x-axis list
            //WinHelper.initListbox3(param1List, evars);
            WinHelper.initListbox(param1List, vars);
            
            //init y-axis list        
            //WinHelper.initListbox3(param2List, evars);
            WinHelper.initListbox(param2List, vars);
            //init z-axis list
            //WinHelper.initListbox3(varList, evars);
            WinHelper.initListbox(varList, vars);                   
        } else {
            //simuldate,etc    
            ArrayList<Symbol> vars = PublicParam.SimHyACommand.getVariables(datavar);
            WinHelper.initListbox(param1List, vars);
            //init y-axis list        
            WinHelper.initListbox(param2List, vars);        
            //init z-axis list
            WinHelper.initListbox(varList, vars);   
        }
                                   
        //For ODE data, trajectory selection box is disabled.
        if (PublicParam.SimHyACommand.trajectoryVariableContainsTrajectoryData(datavar) &&
            !PublicParam.SimHyACommand.trajectoryVariableContainsStatistics(datavar)) {
            trajectoryRadioButton.setEnabled(false);
            statisticsRadioButton.setSelected(true);
        }
        
        //stat is disabled if there is no statistical data. 
        if (PublicParam.SimHyACommand.isStatisticsExploratorVariable(datavar)
		|| PublicParam.SimHyACommand.trajectoryVariableContainsStatistics(datavar)) {
            statisticsRadioButton.setEnabled(true);
        } else {
            statisticsRadioButton.setEnabled(false);
            trajectoryRadioButton.setSelected(true);
        }
        
        //trajectory is selected by default if there is trajectory data, otherwise stat is selected by default
        if (PublicParam.SimHyACommand.isTrajectoryDataVariable(datavar)) {
            trajectoryRadioButton.setSelected(true);
        } else {
            statisticsRadioButton.setSelected(true);
        }     
        
        //stat is disabled if there is DETERM data. 
        if (PublicParam.SimHyACommand.isDeterministicExploratorVariable(datavar)) {
            statisticsRadioButton.setEnabled(false);
        }
        
        if (!trajectoryRadioButton.isSelected() && !statisticsRadioButton.isSelected()) {
            if (trajectoryRadioButton.isEnabled()) {
                trajectoryRadioButton.setSelected(true);
            } else if (statisticsRadioButton.isEnabled()) {
                statisticsRadioButton.setSelected(true);
            }
        }    
        
        //3d is diabled if there is silulated data.
//        d3RadioButton.setEnabled(!PublicParam.SimHyACommand.isTrajectoryDataVariable(datavar));
//        d2RadioButton.setSelected(true);//default value
        
        //fix list is diabled if there is silulated data.
        boolean showFixList = !PublicParam.SimHyACommand.isTrajectoryDataVariable(datavar);
        addButton.setEnabled(showFixList);
        fixlistLabel.setEnabled(showFixList);
        fixlistTable.setEnabled(showFixList);
        WinHelper.initTable(fixlistTable, new ArrayList<ExploredSymbol>());        
    }//GEN-LAST:event_formComponentShown

    private void trajectoryRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_trajectoryRadioButtonItemStateChanged
        enableTrajectoryOrStatTypeRadioButton();
    }//GEN-LAST:event_trajectoryRadioButtonItemStateChanged

    private void statisticsRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_statisticsRadioButtonItemStateChanged
        enableTrajectoryOrStatTypeRadioButton();
    }//GEN-LAST:event_statisticsRadioButtonItemStateChanged

    private void param1ListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_param1ListValueChanged
        //String s = param1List.getSelectedValue().toString();
        
        
    }//GEN-LAST:event_param1ListValueChanged

    private void helpButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpButtonActionPerformed
        WinHelper.showHelp("plot/phaseplot");
    }//GEN-LAST:event_helpButtonActionPerformed

    private void singleRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_singleRadioButtonItemStateChanged
        enableTrajectoryOrStatTypeRadioButton();
    }//GEN-LAST:event_singleRadioButtonItemStateChanged

    private void allRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_allRadioButtonItemStateChanged
        enableTrajectoryOrStatTypeRadioButton();
    }//GEN-LAST:event_allRadioButtonItemStateChanged

    private void rangeRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_rangeRadioButtonItemStateChanged
        enableTrajectoryOrStatTypeRadioButton();
    }//GEN-LAST:event_rangeRadioButtonItemStateChanged

    private void listRadioButtonItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_listRadioButtonItemStateChanged
        enableTrajectoryOrStatTypeRadioButton();
    }//GEN-LAST:event_listRadioButtonItemStateChanged

    private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed
        //show form of adding fix
        WinHelper.showDialog(PublicParam.PlotNewFixForm, PlotNewFixForm.class);        
        //add fix variable
        fullFixTableModel = WinHelper.addVariableToFixList(fixlistTable); 
    }//GEN-LAST:event_addButtonActionPerformed
    
    public String getExceptExploredParam() {
        return "";
    }
    
    public String getSelectedFix() {
        if (fixlistTable.getRowCount() > 0 && fixlistTable.getSelectedRow() < 0) {
            //select last row
            int selectedRowIndex = fixlistTable.getRowCount() - 1;
            fixlistTable.setRowSelectionInterval(selectedRowIndex, selectedRowIndex);
        }
        
        if (fixlistTable.getSelectedRow() >= 0) {
            return ((DefaultTableModel)fixlistTable.getModel()).getValueAt(fixlistTable.getSelectedRow(), 1).toString();
        } else {            
            return "";
        }
    }
    
    boolean toPhaseCommand() {
        String s = "";
        //x,param1List
        if (param1List.getSelectedIndex() == -1) {
            JOptionPane.showMessageDialog(this, "Pls input x-axis.");     
            return false;
        }
        s += ",x=" + param1List.getSelectedValue().toString();
//        for (int i = 0; i < lm.getSize(); i++) {
//            if (i > 0) s += ",";
//            s += lm.getElementAt(i).toString();
//        }
        
        //y
//        lm = param2List.getModel();
//        if (lm.getSize() == 0) {
        if (param2List.getSelectedIndex() == -1) {
            JOptionPane.showMessageDialog(this, "Pls input y-axis.");     
            return false;
        }
        s += ",y=" + param2List.getSelectedValue().toString();
//        for (int i = 0; i < lm.getSize(); i++) {
//            if (i > 0) s += ",";
//            s += lm.getElementAt(i).toString();
//        }
        
        //z(3D)
        if (d3RadioButton.isSelected() && varList.getSelectedIndex() == -1) {
            JOptionPane.showMessageDialog(this, "Pls select a model var(z).");     
            return false;
        }
        if (d3RadioButton.isSelected() && varList.getSelectedIndex() != -1) {
            s += ",z=" + varList.getSelectedValue().toString();
        }
        
        //vars
//        if (simulationvarsList.getSelectedValues().length > 0) {
//            s += ",vars=[";
//            for (int i = 0; i < simulationvarsList.getSelectedValues().length; i++) {
//                if (i > 0) s += ",";
//                s += simulationvarsList.getSelectedValues()[i].toString();
//            }
//            s += "]";
//        }
        
        //fix
        String fix = "";
        TableModel tm = fixlistTable.getModel();
        for (int i = 0; i < tm.getRowCount(); i++) {
            if (Boolean.valueOf(tm.getValueAt(i, 0).toString())) {
                if (tm.getValueAt(i, 1).toString().length() > 0 
                        && tm.getValueAt(i, 2).toString().length() > 0) {
                    //pname=pvalue
                    if (fix.length() > 0) fix += ",";
                    fix += tm.getValueAt(i, 1).toString() + "=[" + tm.getValueAt(i, 2).toString() + "]";
                }
            }
        }
        if (fix.length() > 0) s += ",fix=[" + fix + "]";
        
        //type(3D)
//        if (d3RadioButton.isSelected() && surfaceRadioButton.isSelected()) {
//            s += ",type=surface";
//        } else if (d3RadioButton.isSelected() && colormapRadioButton.isSelected()) {
//            s += ",type=colormap";
//        } 
        
        //trajectoryRadioButton
        if (trajectoryRadioButton.isEnabled() && trajectoryRadioButton.isSelected()) {
            if (singleRadioButton.isSelected() && singleText.getText().length() > 0) {
                s += ",trajectory=" + singleText.getText();
            } else if (allRadioButton.isSelected()) {                
                s += ",trajectory=all";
            } else if (rangeRadioButton.isSelected()  && fromText.getText().length() > 0  && toText.getText().length() > 0) {                
                s += ",trajectory=" + fromText.getText() + ":" + toText.getText();
            } else if (listRadioButton.isSelected() && listText.getText().length() > 0) {
                s += ",trajectory=[" + listText.getText() + "]";
            }
        }
        
        //statisticsRadioButton
        if (statisticsRadioButton.isEnabled() && statisticsRadioButton.isSelected()) {
            if (averageRadioButton.isSelected()) {
                s += ",stat=average";
            } else if (varianceRadioButton.isSelected()) {
                s += ",stat=variance";
            } else if (stddevRadioButton.isSelected()) {
                s += ",stat=stddev";
            } else if (stderrRadioButton.isSelected()) {
                s += ",stat=stderr";
            } else if (cvRadioButton.isSelected()) {
                s += ",stat=cv";
            } else if (fanoRadioButton.isSelected()) {
                s += ",stat=fano";
            } else if (skewRadioButton.isSelected()) {
                s += ",stat=skew";
            } else if (kurtosisRadioButton.isSelected()) {
                s += ",stat=kurtosis";
            }
        }
        
        PublicParam.SimHyACommandExpression += s + ")";
        PublicParam.CommandTypeName = "Phaseplot";     
        return true;
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                PlotPhaseForm dialog = new PlotPhaseForm(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton addButton;
    private javax.swing.JRadioButton allRadioButton;
    private javax.swing.JRadioButton averageRadioButton;
    private javax.swing.JButton backButton;
    private javax.swing.JButton confirmButton;
    private javax.swing.JRadioButton cvRadioButton;
    private javax.swing.JRadioButton d2RadioButton;
    private javax.swing.JRadioButton d3RadioButton;
    private javax.swing.JRadioButton fanoRadioButton;
    private javax.swing.JLabel fixlistLabel;
    private javax.swing.JTable fixlistTable;
    private javax.swing.JLabel fromLabel;
    private javax.swing.JTextField fromText;
    private javax.swing.JButton helpButton;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JRadioButton kurtosisRadioButton;
    private javax.swing.JRadioButton listRadioButton;
    private javax.swing.JTextField listText;
    private javax.swing.JList param1List;
    private javax.swing.JList param2List;
    private javax.swing.JRadioButton rangeRadioButton;
    private javax.swing.ButtonGroup simtypeButtonGroup;
    private javax.swing.JRadioButton singleRadioButton;
    private javax.swing.JTextField singleText;
    private javax.swing.JRadioButton skewRadioButton;
    private javax.swing.JPanel statisticsPanel;
    private javax.swing.JRadioButton statisticsRadioButton;
    private javax.swing.ButtonGroup stattypeButtonGroup;
    private javax.swing.JLabel stattypeLabel;
    private javax.swing.JRadioButton stddevRadioButton;
    private javax.swing.JRadioButton stderrRadioButton;
    private javax.swing.JLabel toLabel;
    private javax.swing.JTextField toText;
    private javax.swing.ButtonGroup trajectoryButtonGroup;
    private javax.swing.JLabel trajectoryLabel;
    private javax.swing.JPanel trajectoryPanel;
    private javax.swing.JRadioButton trajectoryRadioButton;
    private javax.swing.ButtonGroup typeButtonGroup;
    private javax.swing.JList varList;
    private javax.swing.JRadioButton varianceRadioButton;
    private javax.swing.JLabel zBottomLabel;
    private javax.swing.ButtonGroup zButtonGroup;
    private javax.swing.JLabel zaxisLabel;
    // End of variables declaration//GEN-END:variables
    private String lastDataVariable = "";
    private DefaultTableModel fullFixTableModel;
}
